package com.project.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.project.bean.UserBean;
import org.apache.ibatis.annotations.*;

import java.util.List;

/***
 * 用户表mapper接口
 */
@Mapper
public interface IUserMapper {
    /**
     * 按用户名，用户密码登录，
     * 同时根据用户名跳转到该用户权限界面
     * @param userName      用户名
     * @param userPwd       用户密码
     * @return              用户对象
     */
    @Select("select * from sys_user where userName=#{userName} and userPwd=#{userPwd}")
    @ResultMap("uMap")
    public UserBean login(@Param("userName") String userName, @Param("userPwd")String userPwd);


    /**
     * 模糊查询，根据用户名查出用户，
     * 同时查询该用户的角色，并分页
     * @param name      用户名
     * @return          分页对象
     */
    public List<UserBean> findByItem(String name);



    /**
     * 按id查询用户
     * 同时查询用户角色集合
     * @param id    用户id
     * @param用户对象
     */
    @Select("select * from sys_user where pk_userId=#{id}")
    @ResultMap("userMap")
    public UserBean findById(int id);



    /***
     * 查询用户是否存在，
     * 如果不存在，添加用户和用户角色，
     * 返回true，
     * 否则false
     * @param user          用户对象
     */
    public void addUser(@Param("user") UserBean user);



    /**
     * 按照id删除用户，
     * 同时删除该用户对应的角色，
     *同时删除该用户对应的未完成的采购数据和明细
     * @param id
     */
    @Delete("delete * from sys_user where pk_userId=#{id}")
    public void delUser(int id);




    /**
     * 按照id修改用户的角色，添加或删除角色，
     * 同时显示该用户对应的权限
     * @param id
     * @param roleArray
     */
    public void updateUser(@Param("id") int id,@Param("roleArray") int [] roleArray);




    /**
     * 按照id修改密码,
     * 判断新密码与确认新密码是否一致，
     * 如果一致返回true，不一致false，
     * 判断旧密码与新密码不能一致，否则返回false
     * @param id        id
     * @param oldPwd    旧密码
     * @param newPwd    新密码
     * @param newPwd2   确认新密码
     * @return   boolean
     */
    @Update("update sys_user set userPwd=#{userPwd} where pk_userId=#{id}")
    public boolean updatePwd(@Param("id") int id,@Param("userPwd") String oldPwd,@Param("userPwd")String newPwd,@Param("userPwd")String newPwd2);



}
